package com.book.oauth.server.route.vo;

import java.util.Date;
import java.math.BigDecimal;
import java.io.Serializable;
import java.util.Map;

import com.book.common.util.DatetimeUtil;
import com.book.oauth.server.model.vo.ModelVo;
import com.google.common.collect.Maps;
import lombok.Data;
import cn.afterturn.easypoi.excel.annotation.Excel;
import cn.afterturn.easypoi.excel.annotation.ExcelTarget;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import com.fasterxml.jackson.annotation.JsonFormat;

/**
 * Description：路由信息 Entity
 *
 * @Author： leo.xiong
 * @CreateDate： 2020-05-26
 * @Email： leo.xiong@suyun360.com
 * Version:
 */
@Data
@ExcelTarget("routeVo")
@ApiModel(value = "RouteVo", discriminator = "路由信息Vo", subTypes = {RouteVo.class})
public class RouteVo implements Serializable {
    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键ID")
    private Long id;

    @ApiModelProperty(value = "所属模块")
    @Excel(name = "所属模块", width = 30, isImportField = "true_st")
    private Long modelId;

    @ApiModelProperty(value = "类型0：菜单，1：按钮")
    @Excel(name = "类型0：菜单，1：按钮", width = 30, isImportField = "true_st")
    private Integer type;

    @ApiModelProperty(value = "")
    @Excel(name = "", width = 30, isImportField = "true_st")
    private Long parentId;

    @ApiModelProperty(value = "菜单名")
    @Excel(name = "菜单名", width = 30, isImportField = "true_st")
    private String name = "";

    @ApiModelProperty(value = "当前路径")
    @Excel(name = "当前路径", width = 30, isImportField = "true_st")
    private String path = "";

    @ApiModelProperty(value = "组件")
    @Excel(name = "组件", width = 30, isImportField = "true_st")
    private String component = "";

    @ApiModelProperty(value = "是否隐藏")
    @Excel(name = "是否隐藏", width = 30, isImportField = "true_st")
    private String hidden = "";

    @ApiModelProperty(value = "跳转路径")
    @Excel(name = "跳转路径", width = 30, isImportField = "true_st")
    private String redirect = "";

    @ApiModelProperty(value = "是否总是显示")
    @Excel(name = "是否总是显示", width = 30, isImportField = "true_st")
    private String alwaysShow = "";

    @ApiModelProperty(value = "排序")
    @Excel(name = "排序", width = 30, isImportField = "true_st")
    private Integer orderNum = 0;

    @ApiModelProperty(value = "权限")
    @Excel(name = "权限", width = 30, isImportField = "true_st")
    private String permission = "";

    @ApiModelProperty(value = "头部名称")
    @Excel(name = "头部名称", width = 30, isImportField = "true_st")
    private String title = "";

    @ApiModelProperty(value = "图标")
    @Excel(name = "图标", width = 30, isImportField = "true_st")
    private String icon = "";

    @ApiModelProperty(value = "")
    @Excel(name = "", width = 30, isImportField = "true_st")
    private String affix = "";

    @ApiModelProperty(value = "是否缓存")
    @Excel(name = "是否缓存", width = 30, isImportField = "true_st")
    private String noCache = "";

    @ApiModelProperty(value = "")
    @Excel(name = "", width = 30, isImportField = "true_st")
    private String activeMenu = "";

    @ApiModelProperty(value = "创建者")
    private String createBy = "";

    @ApiModelProperty(value = "创建人名称")
    private String createName;

    @ApiModelProperty(value = "创建时间")
    @JsonFormat(pattern = DatetimeUtil.YYYY_MM_DD_HH_MM_SS_L_C, timezone = DatetimeUtil.CHINA_TIME_ZONE)
    private Date createDate;

    @ApiModelProperty(value = "更新者")
    private String updateBy;

    @ApiModelProperty(value = "更新人名称")
    private String updateName;

    @ApiModelProperty(value = "更新时间")
    @JsonFormat(pattern = DatetimeUtil.YYYY_MM_DD_HH_MM_SS_L_C, timezone = DatetimeUtil.CHINA_TIME_ZONE)
    private Date updateDate;

    private ModelVo modelVo;

    private Map<String, Object> meta = Maps.newHashMap();
}
